Cuando te portas mal en una clase de primaria, el profesor se puede enfadar y hacerte copiar en la pizarra, 100 veces, una frase como: "atenderé más en clase" (si no pregúntaselo a Bart Simpson).
En estos tiempos que corren donde la educación es online suponte que tu profesor del curso online te pide que envies un fichero donde haya 100 veces escrito: "Entregaré los deberes a tiempo".
Una opción que tienes es abrir el Notepad, escribir 1 vez la frase y hacer cortar y pegar 100 veces. Pero y si entonces te pide el mismo fichero con 10000 repeticiones? Por mucho que sea fácil cortar y pegar, sigue siendo tedioso. No estan los ordenadores para las tareas repetitivas?
La solución, evidentemente, es hacer un programa.
Lo primero que habrá que hacer, de hecho es abrir un fichero. Abrir un fichero es reservar una porción del disco con un nombre donde guardaremos unos datos. Una vez "abierto" el fichero, se puede escribir en él.
Abrir ficheros en C++ requiere hacer lo siguiente (tal como se explica en Escribir en un Fichero):
Poner el #include <fstream>.
Declarar una variable ofstream con la instrucción:
ofstream F("pizarra.txt");
donde se indica el nombre del fichero.
Utilizar la variable F como si fuera cout.
Por ejemplo, para escribir la frase "Siempre entregaré los deberes a tiempo" en el fichero el programa es:
#include <iostream> using namespace std; int main() { ofstream F("pizarra.txt"); F << "Siempre entregaré los deberes a tiempo" << endl; }
Lo que hay que conseguir es repetir la frase varias veces. Para hacerlo se utiliza una variable entera que se llama un "iterador". El iterador nos cuenta cuantas veces hemos hecho una repetición, para poder parar cuando hayamos hecho las suficientes. La técnica consiste en poner un while como el siguiente:
int i = 1; while (i <= 100) { // hacer algo i = i + 1; }
Al principio, ponemos el iterador a 1, para indicar que es la primera repetición. La condición del while debe ser cierta solamente hasta que se hayan hecho exactamente 100 repeticiones. En este caso la expresión i <= 100 será cierta para i con valores 1, 2, 3, y así hasta 100 mismo, pero será falsa en 101, que es donde ya no queremos repetir más. Para conseguir que la i suba, ponemos una instrucción que incremente la i justo al final del bucle, antes de volver a subir a la condición.
A veces uno se olvida de poner la instrucción i = i + 1 con un efecto devastador, ya que la condición i <= 100 si i vale 1 al principio y no se incrementa siempre será cierta y por tanto el programa entrará en un bucle infinito. Para los que conozcan los discos de vinilo, el programa sería como un "disco rallado".
Si juntamos las dos cosas tendremos el siguiente programa:
#include <iostream> using namespace std; int main() { ofstream F("pizarra.txt"); int i = 1; while (i <= 100) { cout << "Siempre entregaré " << "los deberes a tiempo" << endl; i = i + 1; } }
que genera un fichero pizarra.txt con 100 copias de la frase. Basta con cambiar 100 por 10000 para obtener 10000 copias. Cuánto crees que ocupa el fichero pizarra.txt si pones 100000?
Haz un programa que muestre todos los números naturales desde el 1 hasta el 100.
Haz un programa que mueste todos los números naturales en orden descendente, desde el 100 hasta el 1.
Haz un programa que te pida un número y muestre por pantalla la frase:
El super-programador tiene su dia.
donde super- debe salir tantas veces como el número entrado. Si el número es 3, por ejemplo, la frase debe ser:
El super-super-super-programador tiene su dia.
En preparación